home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Internet Surfer: Getting Started
/
Internet Surfer - Getting Started (Wayzata Technology)(7231)(1995).bin
/
pc
/
mac
/
bonus
/
peter_le
/
finger-1
/
my_units
/
myintern.uni
< prev
next >
Wrap
Text File
|
1992-02-24
|
3KB
|
148 lines
unit MyInternetMenu;
{ This code is part of the Finger/Fingerd source code, written in THINK Pascal 4 }
{ Copyright 1991-1992 Peter N Lewis }
{ If you use this code, you must give me credit in your about box and documentation }
{ This is part of my generic library of routines }
interface
procedure InitInternetMenu;
procedure FinishInternetMenu;
procedure AddInternetCommand (s: str255);
function GetInternetCommand (themenu, theitem: integer): str255;
procedure RemoveInternetCommand (themenu, theitem: integer);
procedure SetXMenu (themenu, theitem: integer);
implementation
uses
AppGlobals, MyUtils, MyPreferences, MyFMenus;
var
send_to_mh, remove_mh: menuHandle;
modified: boolean;
procedure AddInternetCommand (s: str255);
var
i, c: integer;
lessthan: boolean;
mi: str255;
begin
c := CountMItems(send_to_mh);
i := 1;
lessthan := false;
while (i <= c) and not lessthan do begin
GetItem(send_to_mh, i, mi);
lessthan := (s <= mi);
if not lessthan then
i := i + 1;
end;
if not lessthan or (s <> mi) then begin
InsMenuItem(send_to_mh, 'fred', i - 1);
InsMenuItem(remove_mh, 'fred', i - 1);
SetItem(send_to_mh, i, s);
SetItem(remove_mh, i, s);
end;
modified := true;
end;
procedure SetXMenu (themenu, theitem: integer);
begin
SetIDItemEnable(themenu, theitem, CountMItems(send_to_mh) > 0);
end;
function GetInternetCommand (themenu, theitem: integer): str255;
var
s: str255;
begin
GetItem(send_to_mh, theitem, s);
GetInternetCommand := s;
end;
procedure RemoveInternetCommand (themenu, theitem: integer);
begin
DelMenuItem(send_to_mh, theitem);
DelMenuItem(remove_mh, theitem);
modified := true;
end;
procedure SaveInternetMenu;
type
intPtr = ^integer;
intHandle = ^intPtr;
var
oe, ooe: OSErr;
vrn: integer;
dirID: longInt;
i, rn, count, len: integer;
s: str255;
h: handle;
begin
if modified then begin
count := CountMItems(send_to_mh);
len := SizeOf(integer);
for i := 1 to count do begin
GetItem(send_to_mh, i, s);
len := len + Length(s) + 1;
end;
h := NewHandle(len);
if h <> nil then begin
intHandle(h)^^ := count;
len := 2;
for i := 1 to count do begin
GetItem(send_to_mh, i, s);
BlockMove(@s, ptr(longInt(h^) + len), Length(s) + 1);
len := len + Length(s) + 1;
end;
SetPrefsResource(to_rsrc, to_strh_id, h);
end;
modified := false;
end;
end;
procedure SetSaveMenu (themenu, theitem: integer);
begin
SetIDItemEnable(themenu, theitem, modified);
end;
procedure LoadInternetMenu;
type
intPtr = ^integer;
intHandle = ^intPtr;
var
i, rn, count: integer;
s: str255;
h: handle;
begin
rn := GetPrefsResource(to_rsrc, to_strh_id, h);
if h <> nil then begin
count := intHandle(h)^^;
for i := 1 to count do begin
GetIndString(s, to_strh_id, i);
AddInternetCommand(s);
end;
DisposHandle(h);
end;
if rn <> -1 then
CloseResFile(rn);
end;
procedure InitInternetMenu;
begin
send_to_mh := NewMenu(M_InternetTo, 'Send To');
InsertMenu(send_to_mh, -1);
remove_mh := NewMenu(M_RemoveTo, 'Remove');
InsertMenu(remove_mh, -1);
LoadInternetMenu;
modified := false;
SetFBoth(CSaveMenu, @SaveInternetMenu, @SetSaveMenu);
SetFSetMenu(CXInternet, @SetXMenu);
SetFSetMenu(CXRemove, @SetXMenu);
end;
procedure FinishInternetMenu;
begin
end;
end.